<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03_函数</title>
</head>
<body>
<button onclick="alert('警告框')">弹出警告框</button>
<button onclick="confirm('您确认退出登录吗?')">弹出确认框</button>
<button onclick="prompt('请输入用户名')">弹出输入框</button>
<script>
    console.log(parseInt(6.6));//6
    console.log(parseInt(6.1));//6
    console.log(parseInt(6));//6
    console.log(parseInt('hhhh'));//NaN
    console.log(parseInt('34hh56hh78'));//34

    console.log(parseFloat(5));//5
    console.log(parseFloat(5.5));//5.5
    console.log(parseFloat('hhhh'));//NaN
    console.log(parseFloat('3.4hh2.3hh7.8'));//3.4

    //判断是否为NaN非数字,数字得到false,非数字得到true
    console.log(isNaN('hhh'));
    console.log(isNaN(7));
    console.log(isNaN(7.7));


    //1.JS通过function关键字来定义函数
    function f1(){
        console.log('f1函数');
    }
    f1();
    f1();
    f1();
    //2.带参数的函数
    function f2(n){//形参
        console.log("f2函数"+n);
    }
    f2(1);//实参
    f2(false);
    f2('hello');
    //3.形参与实参的个数
    function f3(x,y){
        console.log(x+y);
    }
    f3(1,2);//3
    f3(1);//1+undefined=NaN,实参个数<形参个数:未被赋值的形参值为undefined
    f3(3,2,1);//5,实参个数>形参个数:多余的实参值会被舍弃

    //4.arguments用来保存调用函数时传入的参数,可以看到参数的个数与具体的值
    function f4(){
        console.log(arguments);
    }
    f4(50);//Arguments[50,...]
    f4(50,60);//Arguments(2)[50,60,...]
    f4(50,60,70);//Arguments(3)[50,60,70...]

    //5.函数的返回值
    function f5(a,b){
        return a+b;
    }
    var res = f5(1,2);
    console.log(res);//将函数return的结果保存在res变量中,再打印出来
    console.log(f5(1,2));//直接打印函数调用的结果

    //第二种函数声明方式
    var f6 = function(){
        console.log('f6函数');
    }
    f6();//可以通过变量名直接充当函数名来调用函数
    console.log(f6,typeof f6);//f(){console.log('f6函数');}  function

    //第三种声明方式
    //将函数整体交给常量f7来保存,调用时直接通过常量名调用即可
    const f7 = (n)=>{
        console.log('箭头函数'+n);
    }
    f7(6666);
    f7('你好');
</script>
</body>
</html>